#pragma once
enum GameState {
	NULL_ENTRY, // ??
	TITLE_MENU, // start menu
	PLAYER_TURN_CHANGE, // player turn change (pops-up image)
	CHOOSE_ACTION, // player has to choose to place a tile or move player
	SELECT_GAMETILE, // when manipulating a tile (destroy a tile, rotate a tile, floating room, etc)
	SELECT_A_PLAYER, // select a player when MAP_TILE, MIND CONTROL, 
	MAGICAL_SHIFT_STATE, // select a hand tile while doing magical shift/ may be able to use for PLACE_TILE      
	ROTATE_TILE_STATE, // when manipulating tile after tile special abilities (rotate tile, floating room, magic shift)
	MOVE_PLAYER, // if chosen action is to move player, then player can move his/her character
	MOVE_OTHER_PLAYER,
	PLACE_TILE, // if chosen action is to place a tile, player can choose a tile from their hand and then drag it
				// onto the gameboard (once the tile is placed, then give them another tile, since they can cancel their move)
	PLACE_FLOATING_TILE,
	CONFIRM_ACTION,
	MOVE_PLAYER_CLEAN_UP, // if player recently moved, do actions after the player landed depending on what tile he/she is on
	MOVE_OTHER_PLAYER_CLEAN_UP,
	PLACE_TILE_CLEAN_UP, // if player recently moved, do actions after the player landed depending on what tile he/she is on
	END_GAME_STATISTICS, // end of game screen (may or may not incorporate)
	END_GAME // end game, gets everything ready for statistics
};

static string toString(GameState type){
	string temp;
	switch(type){
		case NULL_ENTRY: temp = "NULL_ENTRY"; break;// ??
		case TITLE_MENU:  temp = "Title Menu";break; // start menu
		case PLAYER_TURN_CHANGE:  temp = "Player Turn Change";break; // player turn change (pops-up image)
		case CHOOSE_ACTION:  temp = "Choose an Action";break; // player has to choose to place a tile or move player
		case SELECT_GAMETILE:  temp = "Select a Gametile";break; // when manipulating a tile (destroy a tile:  break; rotate a tile:  break; floating room:  break; etc)
		case SELECT_A_PLAYER: temp = "Select a Player";break;
		case CONFIRM_ACTION: temp = "Confirm Action"; break;
		case MOVE_PLAYER: temp = "Move Player"; break; // if chosen action is to move player:  break; then player can move his/her character
		case MOVE_OTHER_PLAYER: temp = "Move Other Player"; break;
		case MAGICAL_SHIFT_STATE: temp = "Magical shift"; break;
		case PLACE_FLOATING_TILE: temp = "Place the Floating Tile"; break;
		case ROTATE_TILE_STATE: temp = "Rotate a Tile"; break;
		case PLACE_TILE:  temp = "Place a Tile";break; // if chosen action is to place a tile:  break; player can choose a tile from their hand and then drag it
					// onto the gameboard (once the tile is placed:  break; then give them another tile:  break; since they can cancel their move)
		case MOVE_PLAYER_CLEAN_UP:  temp = "Post Player Move";break; // if player recently moved:  break; do actions after the player landed depending on what tile he/she is on
		case MOVE_OTHER_PLAYER_CLEAN_UP: temp = "Post Other Player Move"; break;
		case PLACE_TILE_CLEAN_UP:  temp = "Post Place Tile";break; // if player recently moved:  break; do actions after the player landed depending on what tile he/she is on
		case END_GAME_STATISTICS: temp = "End Game Statistics"; break; // end of game screen (may or may not incorporate) 
		case END_GAME: temp = "Game Over!"; break; // end of game screen (may or may not incorporate) 
		default:
			temp = "Invalid state";
			break;

	}
	return temp;
}